home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / --llfb-- / programas / sources1.dms / sources1.adf / SOURCES / Vectores / Transforming_GlenzVector.ASM < prev    next >
Assembly Source File  |  1996-06-04  |  12KB  |  443 lines

  1. ;GLENZVECTOR BY LADO OF FI-RE CREW IN 1992 !
  2.     
  3.     
  4. ;    org $25000
  5. ;    load $25000
  6.     
  7.  
  8.     Section    Roman,code_c
  9.  
  10. ;    >extern 'DF0:sources/raytr.dat',sinus
  11.     
  12.  
  13. j    lea $30000,a0             ;memoria torlese
  14. lo    clr.l (a0)+
  15.     cmp.l #$60000,a0
  16.     bcs lo
  17.     
  18.     lea $dff000,a6           ;custom
  19. wr    move.l 4(a6),d0
  20.     lsr.l #8,d0
  21.     cmp.w #$131,d0
  22.     bne wr
  23.     move.w #$7fff,$96(a6)    ;clear  DMACON
  24.     move.w #$7fff,$9a(a6)    ;clear  INTENA
  25.     move.l #copper,$84(a6)   
  26.     clr.w $8a(a6)            ;start copper
  27.     move.w #$87d0,$96(a6)    ;DMACON
  28.     move.w #$c010,$9a(a6)
  29.  
  30. h1    bsr wait                 ;waitblitter
  31. h2    move.l 4(a6),d0          ;waitraster
  32.     lsr.l #8,d0
  33.     cmp.w #$d0,d0
  34.     bne h2
  35.     bsr filler               
  36.     bsr chcor
  37.     btst #6,$bfe001
  38.     bne h1
  39.     bsr wait
  40.     
  41.     move.w #$7fff,$96(a6)
  42.     move.w #$7fff,$9a(a6)
  43.     clr.w $88(a6)            ;start original copper
  44.     move.w #$87f0,$96(a6)
  45.     move.w #$e02c,$9a(a6)
  46.     clr.l d0
  47.     rts                      ;END
  48.     
  49.  
  50. filler    add.w #2,addx           ;xszog novelese
  51.     and.w #$1fe,addx   
  52.     add.w #4,addy           ;yszog novelese    
  53.     and.w #$1fe,addy
  54.     add.w #2,addz           ;zszog novelese        
  55.     and.w #$1fe,addz
  56.     lea coords0(pc),a0        ;pontok x,y,z koordinatai
  57.     lea sinus(pc),a1         ;sinus ertekek
  58.     lea $80(a1),a3           ;cosinus ertekek
  59.     lea tarolo(pc),a2        ;2D x,y letarolasa
  60.     lea addx(pc),a4          ;szogek
  61.     move.l #13,d7            ;pontok szama
  62. h3    movem.w (a0)+,d0/d1/d6   ;x,y,z
  63.     move.w 4(a4),d5          ;Zszog
  64.     bsr calcul               ;Z-rotation
  65.     move.w d0,d6             ;X tarolasa
  66.     move.w d3,d0             ;Y
  67.     move.w (a4),d5           ;Xszog
  68.     bsr calcul               ;X-rotation
  69.     move.w d0,d6             ;uj Y tarolasa
  70.     move.w d3,d0             ;Z
  71.     move.w 2(a4),d5          ;Yszog
  72.     bsr calcul               ;Y-rotation
  73.     exg d0,d3                ;X csere Z-vel    Z=d3
  74.     moveq #12,d6             ;lekepezes 2D-re
  75.     move.w #$444,d2
  76.     sub.w d3,d2              ;$444-Z
  77.     muls d2,d0               ;z'*x
  78.     asr.l d6,d0              ;z'*x/2048=2D X
  79.     muls d2,d1               ;z'*y
  80.     asr.l d6,d1              ;z'*y/2048=2D Y
  81.     add.w #150,d0         ;X=X+150     kozepre a kepernyon           
  82.     add.w #100,d1            ;Y=Y+100
  83.     move.w d0,(a2)+         ;2D X tarolasa
  84.     move.w d1,(a2)+          ;2D Y tarolasa
  85.     dbf d7,h3                ;14-szer               
  86.  
  87.     move.l #$ffff8000,$72(a6)  ;vonalhuzashoz standard ertekek
  88.     move.l #$ffffffff,$44(a6)
  89.     move.w #120,$60(a6)        ;kepernyo szelessege
  90.  
  91.     eor.w #$8000,erno+2        ;kepernyo csere
  92.     eor.w #$8000,copscr       ;csere a copperben is
  93.     eor.w #$8000,copscr+4
  94.     eor.w #$8000,copscr+8
  95.  
  96.     move.l erno(pc),a0          
  97.     add.l #30+[192*$78],a0
  98.     bsr wait                   
  99.     move.l #$01000002,$40(a6)   
  100.     move.w #$28-[[13*16]/8],$66(a6)
  101.     move.l a0,$54(a6)
  102.     move.w #$8d0d,$58(a6)       
  103.     
  104.     lea tarolo(pc),a1          ;2D x,y ertekek
  105.     lea meghat2(pc),a2          ;structure
  106.     lea sinus+$400(pc),a3      ;sor kezdopontja /0-f/ + $a4a or $b4a
  107.     lea sinus+$680(pc),a5      ;szelesseg/2/ es vonal hossz values
  108.     move.w (a2)+,lap           ;lapok szama /24/
  109. h7    move.l (a2)+,d7            ;hany pontot kosson ossze
  110.     move.l (a2)+,a4            ;oszzekotesi sorrend
  111.     move.l (a2)+,a0           ;melyik kepernyore
  112.  
  113.     add.l erno(pc),a0         ;ide rajzol
  114.     movem.w (a4),d0/d1/d2      ;lathatosag eldontese
  115.     move.w (a1,d1.w),d3        ;x1
  116.     sub.w (a1,d0.w),d3         ;X1-X0
  117.     move.w 2(a1,d2.w),d4       ;y2
  118.     sub.w 2(a1,d1.w),d4        ;Y2-Y1
  119.     move.w 2(a1,d1.w),d5       ;y1
  120.     sub.w 2(a1,d0.w),d5        ;Y1-Y0
  121.     move.w (a1,d2.w),d6        ;x2
  122.     sub.w (a1,d1.w),d6         ;X2-X1
  123.     mulu d4,d3                 ;(y2-y1)(x1-x0)=d3
  124.     mulu d6,d5                 ;(y1-y0)(x2-x1)=d5
  125.     sub.w d5,d3                
  126.     bmi vakon                   ;nem latszik
  127. nb    move.w (a4)+,d5            ;1.pont
  128.     move.w (a1,d5.w),d0        ;x1 koordinata
  129.     move.w 2(a1,d5.w),d1       ;y1 koordinata
  130.     bsr lines                  ;vonalhuzo
  131. vakon    subq.w #1,lap              ;lapszam csokkentes
  132.     bne h7                     ;van meg ?
  133.     move.l erno(pc),a0          
  134.     add.l #30+[190*$78],a0
  135.     bsr wait                    ;uzemmodban dolgozik
  136.     move.l #$09f00012,$40(a6)   
  137.     move.w #$28-[[13*16]/8],$64(a6)
  138.     move.w #$28-[[13*16]/8],$66(a6)
  139.     move.l a0,$50(a6)
  140.     move.l a0,$54(a6)
  141.     move.w #$8a0d,$58(a6)       ;feltolt
  142.     rts
  143.  
  144. lines    move.w (a4)+,d5          ;kovetkezo pont
  145.     move.w (a1,d5.w),d2      ;x2
  146.     move.w 2(a1,d5.w),d3     ;y2
  147.     movem.w d2/d3,-(a7)      ;kovetkezo pont latarolasa
  148.     cmp.w d1,d3              ;y2-y1
  149.     bgt p1
  150.     exg d0,d2                ;kisebb --> coords csere                
  151.     exg d1,d3                ;mindig a nagyobb y-bol kell huzni !
  152.     beq not                  
  153. p1    move.w #120,d5           ;kepernyo szelessege
  154.     move.w d1,d4             ;nagyobb y
  155.     mulu d5,d4               ;120*y = pont sora
  156.     move.w d0,d5             ;x0
  157.     add.l a0,d4              ;$30000+x0 = pont oszlopa
  158.     lsr.w #3,d5              ;pont sora/8
  159.     add.w d5,d4              ;megkapja a pont helyet
  160.     moveq #0,d5
  161.     sub.w d1,d3              ;Y
  162.     sub.w d0,d2              ;X   /x1-x2/
  163.     bpl p2
  164.     moveq #1,d5              ;x2 kisebb volt,a kapott X negativ 
  165.     neg.w d2                 ;most mar pozitiv X
  166. p2    move.w d3,d1             ;Y
  167.     add.w d1,d1              ;2Y
  168.     cmp.w d2,d1              ;X-2Y
  169.     dbhi d3,p3               ;csokkenti Y-t ha
  170. p3    move.w d3,d1             ;Y
  171.     sub.w d2,d1              ;Y-X
  172.     bpl p4
  173.     exg d2,d3                ;X csereje Y-al
  174. p4    addx.w d5,d5
  175.     add.w d2,d2              ;2Y             
  176.     move.w d2,d1             ;2Y
  177.     sub.w d3,d2              ;2Y-X
  178.     addx.w d5,d5
  179.     add.w d0,d0
  180.     move.w d2,d6
  181.     sub.w d3,d6
  182.     add.w d3,d3
  183. ok    move.w (a5,d3.w),d3         ;$58
  184.     move.w (a3,d0.w),d0         ;$40
  185.     move.b dat(pc,d5.w),d5      ;melyik siknyolcad
  186.     bsr wait
  187.     move.w d2,$52(a6)           ;2y-x
  188.     move.w d0,$40(a6)           ;12-15-->sor kezdopontja /0-f/ + a4a
  189.     move.b d5,$43(a6)           ;siknyolcad
  190.     move.l d4,$48(a6)           ;vonal kezdocime
  191.     move.l d4,$54(a6)           ;vonal kezdocime
  192.     move.w d1,$62(a6)           ;2y
  193.     move.w d6,$64(a6)           ;2y-2x
  194.     move.w d3,$58(a6)           ;szelesseg=2 , magassag=vonal hossza
  195. not    movem.w (a7)+,d0/d1
  196.     dbf d7,lines
  197.     rts
  198. dat    dc.l $3431353,$b4b1757     ;siknyolcad    
  199.     
  200. calcul    move.w (a3,d5.w),d4     ;cos ertek
  201.     move.w (a1,d5.w),d5     ;sin ertek
  202.     move.w d0,d2            ;c1
  203.     move.w d1,d3        ;c2
  204.     muls d4,d0        ;c1*cos(c0angle)
  205.     muls d5,d1        ;c2*sin(c0angle)
  206.     muls d4,d3        ;c2*cos(c0angle)
  207.     muls d5,d2        ;c1*sin(c0angle)
  208.     sub.l d1,d0        ;c1*cos(c0angle)-c2*sin(c0angle)
  209.     add.l d2,d3        ;c2*cos(c0angle)+c1*sin(c0angle)
  210.     add.l d0,d0        
  211.     add.l d3,d3
  212.     swap d0                 ;uj c1
  213.     swap d3                 ;uj c2
  214.     move.w d6,d1        
  215.     rts
  216.  
  217.  
  218. chcor    tst.w lass
  219.     bmi kell
  220.     subq.w #1,lass
  221.     rts
  222. kell    moveq #0,d6
  223.     moveq #[14*3]-1,d7
  224.     lea coords0(pc),a0
  225.     move.l nextcor(pc),a1
  226. cv4    cmpm.w (a0)+,(a1)+
  227.     beq cv1
  228.     ble cv2
  229.     addq.w #5,-2(a0)
  230.     bra cv3
  231. cv2    subq.w #5,-2(a0)
  232. cv3    addq.w #1,d6
  233. cv1    dbf d7,cv4            
  234.     tst.w d6
  235.     bne nem
  236.     move.w #150,lass
  237.     add.l #[[14*3]*2],nextcor
  238.     addq.w #1,obj
  239. dik    cmp.w #5,obj
  240.     bne nem
  241.     cmp.w #5,dik+2
  242.     bne nb2
  243.     addq.w #1,dik+2
  244. nb2    clr.w obj
  245.     move.l #coords1,nextcor
  246. nem    rts    
  247.  
  248. wait    btst #$e,2(a6)          ;waitblitter
  249.     bne wait
  250.     rts
  251.  
  252.  
  253. copper    dc.w $100,$200,$8e,$2c81,$90,$2cc1,$92,$38,$94,$d0
  254.     dc.w $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  255.     dc.w $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  256.     dc.w $180,0,$108,$50,$10a,$50
  257.     ; color ******************
  258. copcol    dc.w $182,$005 ;belso, sotetebb felulet  500
  259.     dc.w $184,$58f ;kulso, vilagosabb szin   f85
  260.     dc.w $186,$58f ;----------------------
  261.     dc.w $188,$58f ;----------------------   
  262.     dc.w $18a,$33a ;belso, vilagosabb felulet  a33
  263.     dc.w $18c,$69f ;kulso felulet alatti, logikai szin f96
  264.     dc.w $18e,$58f ;----------------------
  265.     ;      *******************
  266.     dc.w $e0,3,$e4,3,$e8,3,$e2
  267. copscr    dc.w 0,$e6,$28,$ea,$50
  268.     dc.w $3001,$fffe,$100,$3200,$180,$ff0,$3101,$fffe,$180,0
  269.     dc.w $f001,$fffe,$100,$200,$180,$ff0,$f101,$fffe,$180,0
  270.     dc.w $ffff,$fffe
  271.     
  272. ;!!!!!!!!!!!  LADO !!!  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  273. ;     METAMORF GLENZ KOCKA , csak a koordinatakato kell modositani !
  274. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  275.  
  276. coords0    dc.w 0,0,180        ;0. pont
  277.     dc.w 0,0,180        ;1.
  278.     dc.w 0,0,180        ;2.
  279.     dc.w 0,0,180        ;3.
  280.     dc.w 180,180,-180    ;4.
  281.     dc.w 180,-180,-180    ;5.
  282.     dc.w -180,-180,-180    ;6.
  283.     dc.w -180,180,-180    ;7.
  284.     dc.w 0,0,180        :8.
  285.     dc.w 0,90,0        ;9.
  286.     dc.w 90,0,0        ;10.
  287.     dc.w 0,-90,0        ;11.
  288.     dc.w -90,0,0        ;12.
  289.     dc.w 0,0,-180        ;13.
  290.  
  291. coords1    dc.w 0,0,180        ;0. pont
  292.     dc.w 0,0,180        ;1.
  293.     dc.w 0,0,180        ;2.
  294.     dc.w 0,0,180        ;3.
  295.     dc.w 180,180,-180    ;4.
  296.     dc.w 180,-180,-180    ;5.
  297.     dc.w -180,-180,-180    ;6.
  298.     dc.w -180,180,-180    ;7.
  299.     dc.w 0,0,180        :8.
  300.     dc.w 0,90,0        ;9.
  301.     dc.w 90,0,0        ;10.
  302.     dc.w 0,-90,0        ;11.
  303.     dc.w -90,0,0        ;12.
  304.     dc.w 0,0,-180        ;13.
  305.     
  306. coords2 dc.w 180,180,180    ;0.
  307.     dc.w 180,-180,180    ;1.
  308.     dc.w -180,-180,180    ;2.
  309.     dc.w -180,180,180    ;3.
  310.     dc.w 180,180,-180    ;4.
  311.     dc.w 180,-180,-180    ;5.
  312.     dc.w -180,-180,-180    ;6.
  313.     dc.w -180,180,-180    ;7.
  314.     dc.w 0,0,180        :8.
  315.     dc.w 0,180,0        ;9.
  316.     dc.w 180,0,0        ;10.
  317.     dc.w 0,-180,0        ;11.
  318.     dc.w -180,0,0        ;12.
  319.     dc.w 0,0,-180        ;13.
  320.     
  321. coords3    dc.w 180,180,180    ;0.
  322.     dc.w 180,-180,180    ;1.
  323.     dc.w -180,-180,180    ;2.
  324.     dc.w -180,180,180    ;3.
  325.     dc.w 180,180,-180    ;4.
  326.     dc.w 180,-180,-180    ;5.
  327.     dc.w -180,-180,-180    ;6.
  328.     dc.w -180,180,-180    ;7.
  329.     dc.w 0,0,300        :8.
  330.     dc.w 0,300,0        ;9.
  331.     dc.w 300,0,0        ;10.
  332.     dc.w 0,-300,0        ;11.
  333.     dc.w -300,0,0        ;12.
  334.     dc.w 0,0,-300        ;13.
  335.  
  336. coords4 dc.w 80,280,180        ;0.
  337.     dc.w 80,-280,180    ;1.
  338.     dc.w -80,-280,180    ;2.
  339.     dc.w -80,280,180    ;3.
  340.     dc.w 80,280,-180    ;4.
  341.     dc.w 80,-280,-180    ;5.
  342.     dc.w -80,-280,-180    ;6.
  343.     dc.w -80,280,-180    ;7.
  344.     dc.w 0,0,180        :8.
  345.     dc.w 0,280,0        ;9.
  346.     dc.w 80,0,0        ;10.
  347.     dc.w 0,-280,0        ;11.
  348.     dc.w -80,0,0        ;12.
  349.     dc.w 0,0,-180        ;13.
  350.     
  351. coords5 dc.w 30,220,140        ;0.
  352.     dc.w 20,-140,80    ;1.
  353.     dc.w -20,-140,80    ;2.
  354.     dc.w -30,220,140    ;3.
  355.     dc.w 30,220,-140    ;4.
  356.     dc.w 20,-140,-80    ;5.
  357.     dc.w -20,-140,-80    ;6.
  358.     dc.w -30,220,-140    ;7.
  359.     dc.w 0,150,290        :8.
  360.     dc.w -20,260,0        ;9.
  361.     dc.w 60,130,0        ;10.
  362.     dc.w -10,-250,0        ;11.
  363.     dc.w -50,-20,0        ;12.
  364.     dc.w 0,150,-290        ;13.
  365.     
  366. coords6 dc.w 20,160,160        ;0.
  367.     dc.w 20,-160,160        ;1.
  368.     dc.w -20,-160,160    ;2.
  369.     dc.w -20,160,160    ;3.
  370.     dc.w 20,160,-160    ;4.
  371.     dc.w 20,-160,-160    ;5.
  372.     dc.w -20,-160,-160    ;6.
  373.     dc.w -20,160,-160    ;7.
  374.     dc.w 0,0,300        :8.
  375.     dc.w 0,300,0        ;9.
  376.     dc.w 40,0,0        ;10.
  377.     dc.w 0,-300,0        ;11.
  378.     dc.w -40,0,0        ;12.
  379.     dc.w 0,0,-300        ;13.
  380.     
  381. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  382.  
  383.  
  384. meghat2    dc.w 36
  385.     dc.l 2,kot1,$28,2,kot2,0,2,kot3,$28,2,kot4,0,2,kot5,0
  386.     dc.l 2,kot6,$28,2,kot7,0,2,kot8,$28,2,kot9,0,2,kot10,$28
  387.     dc.l 2,kot11,0,2,kot12,0,2,kot13,$28,2,kot14,0,2,kot15,$28
  388.     dc.l 2,kot16,$28,2,kot17,0,2,kot18,$28,2,kot19,0,2,kot20,$28
  389.     dc.l 2,kot21,0,2,kot22,$28,2,kot23,0,2,kot24,$50,2,kot25,$50
  390.     dc.l 2,kot26,$50,2,kot27,$50,2,kot28,$50,2,kot29,$50,2,kot30,$50
  391.     dc.l 2,kot31,$50,2,kot32,$50,2,kot33,$50,2,kot34,$50,2,kot35,$50
  392.     dc.l 2,kot36,$28
  393.     
  394. kot1    dc.w 0,4,32,0
  395. kot2    dc.w 4,8,32,4
  396. kot3    dc.w 8,12,32,8
  397. kot4    dc.w 12,0,32,12
  398. kot5    dc.w 16,0,36,16
  399. kot6    dc.w 0,12,36,0
  400. kot7    dc.w 12,28,36,12
  401. kot8    dc.w 20,4,40,20
  402. kot9    dc.w 4,0,40,4
  403. kot10    dc.w 0,16,40,0
  404. kot11    dc.w 16,20,40,16
  405. kot12    dc.w 24,8,44,24
  406. kot13    dc.w 8,4,44,8
  407. kot14    dc.w 4,20,44,4
  408. kot15    dc.w 20,24,44,20
  409. kot16    dc.w 28,12,48,28
  410. kot17    dc.w 12,8,48,12
  411. kot18    dc.w 8,24,48,8
  412. kot19    dc.w 24,28,48,24
  413. kot20    dc.w 20,16,52,20
  414. kot21    dc.w 24,20,52,24
  415. kot22    dc.w 28,24,52,28
  416. kot23    dc.w 16,28,52,16
  417. kot24    dc.w 4,0,32,4
  418. kot25    dc.w 12,8,32,12
  419. kot26    dc.w 12,0,36,12
  420. kot27    dc.w 16,28,36,16
  421. kot28    dc.w 4,20,40,4
  422. kot29    dc.w 16,0,40,16
  423. kot30    dc.w 4,8,44,4
  424. kot31    dc.w 24,20,44,24
  425. kot32    dc.w 12,28,48,12
  426. kot33    dc.w 24,8,48,24
  427. kot34    dc.w 16,20,52,16
  428. kot35    dc.w 24,28,52,24
  429. kot36    dc.w 28,16,36,28
  430.  
  431. addx    dc.w 0
  432. addy    dc.w 0            ;yangle
  433. addz    dc.w 0             ;zangle
  434. lap    dc.w 0             ;siklapok szama/object
  435. scr    dc.l 0             ;kepernyo
  436. erno    dc.l $38000        ;kepernyo
  437. nextcor    dc.l coords2
  438. lass    dc.w 30
  439. obj    dc.w 0
  440. sinus    incbin "Coleccion_Sources1:sources/vectores/raytr.dat"
  441. tarolo    blk.b 100,0
  442.  
  443.